import store from '@/store';
import {
  isArray
} from '@/utils/is';

/** 用户权限相关操作（User permissions related operations） */
export function useAuth() {

  /**
   * 确定是否有权限（Determine whether there is permission）
   */
  function hasAuth(value, def = true) {
    // console.log('hasAuth', { value: value, def: def});
    // 默认可见（Visible by default）
    if (!value) {
      return def;
    }
    const allCodeList = store.getters.getPermCodeList;
    // console.log('hasAuth', { value: value, def: def, allCodeList: allCodeList });
    if (!isArray(value)) {
      return allCodeList.includes(value);
    }
    // 获取交集
    var hasCodeArry = allCodeList.filter(function(v) {
      return value.includes(v); // 利用filter方法来遍历是否有相同的元素
    });
    if (hasCodeArry) {
     return hasCodeArry.length > 0;
    }
    return false;
  }

  /**
   * 改变角色（Change roles）
   * @param roles
   */
  async function changeRole(roles) {
    if (!isArray(roles)) {
      roles = [roles];
    }
    await store.dispatch('setRoleList', roles);
  }

  return {
    changeRole,
    hasAuth
  };
}
